2015.01.31
WordPressカスタマイズ(最近のコメントと最近の記事)・・・(WordPress)
WordPresssのテーマに「小粋空間」提供のkoikikukan3を採用したことを先に書いたが、Wordpressでは、サイドパネルの表示要素をWidgetとして、自由に選択できるので便利であり、style.cssで背景画などを設定し直せば、概ね所望のデザインができるが、標準のwidgetで気に入らなければ、カスタマイズすることになる。
(1) 最近のコメント
サイドパネルの最近のコメントリストは、単純に投稿されたコメントが投稿者名とともに、降順で表示される。
しかし、同じ記事に対するコメント表示で、記事タイトルが毎回表示されるのは煩わしいので、記事が変わった時のみタイトルを表示し同一記事に対しての2つ目以降は、投稿者名のみ表示することとした。 下記がそのphpスクリプトである。
<ul>
<div id="widget-container"><h2 class="widget-title">最近のコメント</h2><ul id="recentcomments">
<?php
$title = ""; $pretitle = "xxx";
$comments = get_comments(array(
'status' => 'approve',
'number' => 100
));
foreach($comments as $comment):
$post = get_post($comment-> comment_post_ID);
ob_start();
the_title();
$title = ob_get_contents(); //出力されるはずだったタイトルを取得
ob_end_clean();
ob_start();
the_permalink();
$pmlink = ob_get_contents(); //出力されるはずだったリンク先を取得
ob_end_clean();
if($title != $pretitle){
$pretitle = $title;
echo "<li><a href=\"$pmlink#comments\">$title</a></li>\n";
}?>
<p><?php comment_author_link(); ?>(<?php comment_date('Y/m/d'); ?>)</p>
<?php endforeach; ?>
</ul>
(2) 最近の投稿
標準のwidgetで提供される最近の投稿の表示では、多くの記事を表示すると行数が多くなるので、プルダウンにしたいと考えた。
wordpressが提供する wp_get_archives という関数はプルダウンにする機能を備えている。 format=optionを指定するだけで、<option>と</option>で挟んで出力され、そのままプルダウンを構成できる。
合わせて、総投稿記事数も表示したいと考え、それをカウントするスクリプトもプルダウン表示先立ちに追加した。
<div id="widget-container"><h2>最近の投稿</h2>
<?php $numposts = $wpdb->get_var("SELECT count(5) FROM $wpdb->posts WHERE post_status = 'publish' AND post_type = 'post'");
if ($numposts > 0)
$numposts = number_format($numposts); // 記事総数の取得
?>
<spn> <a href="<?php echo get_option('siteurl'); ?>/?page_id=277">記事一覧</a><?php echo "<small> (総記事数:$numposts)\n"; ?></small>
</span>
<div class="postsel">
<select name="archive-dropdown" onChange='document.location.href=this.options[this.selectedIndex].value;'>
<option value=""><?php echo attribute_escape(__('記事を選択')); ?></option>
<?php wp_get_archives('type=postbypost&limit=200&format=option'); ?>
</select>
</div>
</div>
<?php if ( ! dynamic_sidebar( 'secondary-widget-area' ) ) : ?>
<?php endif; ?>
コメント
コメント投稿